//! 核心错误类型定义
//! 
//! 定义不同类型的错误，用于区分网络错误和协议错误等

use thiserror::Error;
use std::io;

/// 核心错误类型枚举
#[derive(Error, Debug)]
pub enum CoreError {
    /// 网络相关错误
    #[error("Network error: {source}")]
    Network {
        #[from]
        source: io::Error,
    },
    
    /// 协议解析错误
    #[error("Protocol error: {message}")]
    Protocol {
        message: String,
    },
    
    /// 存储层错误
    #[error("Storage error: {message}")]
    Storage {
        message: String,
    },
    
    /// 内部错误
    #[error("Internal error: {message}")]
    Internal {
        message: String,
    },
}

impl CoreError {
    /// 检查是否为网络错误
    pub fn is_network_error(&self) -> bool {
        matches!(self, CoreError::Network { .. })
    }
    
    /// 检查是否为协议错误
    pub fn is_protocol_error(&self) -> bool {
        matches!(self, CoreError::Protocol { .. })
    }
}

/// 核心结果类型
pub type Result<T> = std::result::Result<T, CoreError>;